#ifndef EXPRESSION_GOLDEN_SAMPLE_H
#define EXPRESSION_GOLDEN_SAMPLE_H
#pragma once

#include <string>
#include "../json.hpp"

namespace cyclone::parser
{
	using Json = nlohmann::json;
	enum class EstreeExpression
	{
		ThisExpression,
		ArrayExpression,
		ObjectExpression,
		FunctionExpression,
		ArrowFunctionExpression,
		YieldExpression,
		Literal,
		UnaryExpression,
		UpdateExpression,
		BinaryExpression,
		AssignmentExpression,
		LogicalExpression,
		MemberExpression,
		ConditionalExpression,
		CallExpression,
		NewExpression,
		SequenceExpression,
		TemplateLiteral,
		TaggedTemplateExpression,
		ClassExpression,
		MetaProperty,
		Identifier,
		AwaitExpression,
		ImportExpression,
		ChainExpression,

		ExpressionKindCount

	};

	class ExpressionGoldenSample
	{
	public:
		static const std::string &expresion(EstreeExpression idx);
		static Json ast(EstreeExpression idx);
	};

} // namespace cyclone::parser

#endif